﻿using System;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Freejobber.Core.Generic.Profile;
using Freejobber.Core.Generic.Security;
using Freejobber.Core;

namespace Freejobber.Pages
{
    public partial class Registration : System.Web.UI.Page
    {
        private string _validationErrorMessage = "";

        protected void Page_Load(object sender, EventArgs e)
        {/*
            HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.Public);
            HttpContext.Current.Response.ExpiresAbsolute = DateTime.UtcNow.AddDays(1);
            HttpContext.Current.Response.Cache.SetLastModified(DateTime.UtcNow);
            */
            if (IsPostBack)
            {

            }
        }

        private bool CheckLoginName()
        {
            bool _result = true;
            string _login = Server.HtmlEncode(tbLogin.Text);
            string _password = Server.HtmlEncode(tbPassword.Text);
            string _email = Server.HtmlEncode(tbEmail.Text); ;
            if (string.IsNullOrEmpty(_login))
            {
                _validationErrorMessage = "Имя пользователя не может быть пустым.";
                _result = false;
                return _result;
            }

            var regex = new Regex(@"^[a-zA-Z][a-zA-Z0-9-_\.]{3,20}$");
            if (!regex.IsMatch(_login))
            {
                _validationErrorMessage = "Имя пользователя не соответсвует правилам.";
                _result = false;
                return _result;
            }

            var regexPass = new Regex(@"^[a-zA-Z0-9-_\.]{3,20}$");
            if (!regexPass.IsMatch(_password))
            {
              //  _validationErrorMessage = "Пароль не соответсвует правилам.";
              //  _result = false;
              //  return _result;
            }

            var regexEmail = new Regex(@"^[0-9a-z]+[-\._0-9a-z]*@[0-9a-z]+[-\._^0-9a-z]*[0-9a-z]+[\.]{1}[a-z]{2,6}$");
            if (!regexEmail.IsMatch(_email))
            {
                _validationErrorMessage = "Email не соответсвует правилам.";
                _result = false;
                return _result;
            }
            if (UserClass.IsLoginExist(_login))
            {
                _validationErrorMessage = "Имя пользователя занято.";
                _result = false;
                return _result;
            }

            return _result;
        }

        protected void valTimeRange_ServerValidate(object source, ServerValidateEventArgs e)
        {
            if (!CheckLoginName())
            {
                e.IsValid = false;
                valLoginName.Text = _validationErrorMessage;
            }
            else
                e.IsValid = true;
        }

        protected void btnRegistrtionClick(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                string _loginName = Server.HtmlEncode(tbLogin.Text);
                string _password =SecurityManager.GetMD5Hash(Server.HtmlEncode(tbPassword.Text));
                string _email =Server.HtmlEncode(tbEmail.Text);
                RegisterAccount(_loginName, _password, _email);
            }
        }

        private void RegisterAccount(string _loginName, string _password, string _email)
        {
            if (UserManager.CreateNewAccount(_loginName, _password, _email) == UserManager.UserErrorState.Success)
            {
                Page.FindControl("wrapper").Visible = false;
                Page.FindControl("divRegOK").Visible = true;
            }
        }
    }
}